热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

本文|初期_如何使用ModelBox快速提升AI应用性能?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何使用ModelBox快速提升AI应用性能?相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何使用ModelBox快速提升AI应用性能?相关的知识,希望对你有一定的参考价值。




摘要:在开发初期开发者往往聚焦在模型的精度上,性能关注较少,但随着业务量不断增加,AI应用的性能往往成为瓶颈,此时对于没有性能优化经验的开发者来说往往需要耗费大量精力做优化性能,本文为开发者介绍一些常用的优化方法和经验。

本文分享自华为云社区《如何使用ModelBox快速提升AI应用性能》,作者: panda。

随着AI技术和计算能力的发展,越来越多的开发者学会用tensorflow、pytorch等引擎训练模型并开发成AI应用以解决各种生产问题。在开发初期开发者往往聚焦在模型的精度上,性能关注较少,但随着业务量不断增加,AI应用的性能往往成为瓶颈,此时对于没有性能优化经验的开发者来说往往需要耗费大量精力做优化性能,本文为开发者介绍一些常用的优化方法和经验。本文首先介绍什么是AI应用性能优化,以及常用的性能优化手段,然后介绍华为云ModelBox开源框架,最后结合实际业务为例,详细讲解如何利用ModelBox框架进行快速的性能优化以及背后的原理。


一、AI应用常用性能优化方法


1、什么是AI应用性能优化

什么是AI应用性能优化? AI应用性能优化是保证结果正确的情况下,提升AI推理应用执行效率。AI应用性能优化的目的一般分为两方面:一方面可以提升用户体验,如门禁系统刷脸场景,对推理时延比较敏感,识别速度直接影响用户感官,再比如自动驾驶场景,对时延要求非常高;另一方面可以降低硬件成本,相同的硬件设备可以支撑更多的业务,当部署节点数具备一定规模时,节省的硬件成本就相当可观了。

如何去衡量性能的好坏?我们通常使用吞吐量和时延来衡量。 吞吐量在不同场景也有不同衡量指标,比如图片请求场景,一般使用qps作为吞吐量的指标,即每秒种处理的请求个数。在视频流场景,则一般使用视频并发路数来衡量。 时延是指数据输入到结果输出中间的处理时间差。正常来讲吞吐量越大越好,时延越小越好,在不同场景对吞吐量和时延的要求不一样, 对于某些时延不敏感的场景,我们可以牺牲时延来提升吞吐量。所以我们在做性能优化前需要先明确优化指标是吞吐量还是时延。


另外除此之外,在性能优化过程中,还需要重点关注一些系统资源指标,如内存、显存、CPU占用率、GPU占用率等。这些指标可以帮忙我们辅助判断当前资源使用情况,为我们做性能优化提供思路,如GPU利用率较低时,就需要针对性想办法充分利用GPU资源。


2、AI应用性能优化方法

一个AI应用可以分为模型和工程逻辑,AI应用的优化我们也可以从上到下进行划分,其中应用流程优化和应用工程优化为工程方面的优化,模型编译优化和模型算法优化则为模型优化。


可以看到同为batchsize为16时,通过预处理性能较纯模型推理优化性能有提升,同时全为cpu预处理时反而比gpu预处理性能好。这是因为一方面cpu预处理采用了多线程并发处理,另一方面GPU预处理抢占了GPU资源,影响了推理速度,从而影响整体性能。所以并不推荐所有操作都使用硬件加速,需要具体场景具体分析,保证资源计算的合理分配。



通过ModelBox优化后的数据执行情况如上,优化收益主要如下:

1、流程图每个节点都是独立线程执行,多个数据通过pipeline并行
2、除推理功能单元外,其他cpu预处理采用多线程执行,每个功能单元线程数可以灵活配置
3、不仅推理,其他功能单元的执行也可以是采用多硬件异构加速

AI应用的性能优化是一个循序渐进的过程,并不是所有方法都有效,开发者需要结果自身业务具体问题具体分析,才能到达事半功倍的效果。经过实际业务的优化实践,希望大家对如果使用ModeBox框架优化AI应用性能有一些初步了解,同时也能理解优化原理。如果对ModelBox感兴趣可以进入ModelBox官网详细了解。


点击关注,第一时间了解华为云新鲜技术~


推荐阅读
  • 【JVM技术专题】深入分析CG管理和原理查缺补漏「番外篇」
    前提概要本文主要针对HotspotVM中“CMSParNew”组合的一些使用场景进行总结。自Sun发布Java语言以来,开始使用GC技术来进行内存自动管理࿰ ... [详细]
  • 超赞!GitHub上百万下载量Java面试手册!颠覆你的认知
    金三面试不顺心,马上银四面试在即,自己复盘总觉得Java知识点很凌乱?没有合适的方法学习!今天分享这份GitHub上百万下载量Ja ... [详细]
  • PHPcURL获取微信公众号access_token的实例php实例:这篇文章主要介绍了PHPcURL获取微信公众号access_token的实例,需要的朋友可以参考下1.开发微信 ... [详细]
  • 开发笔记:Python之父重回决策层
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之父重回决策层相关的知识,希望对你有一定的参考价值。在GuidovanRossum(吉多· ... [详细]
  • 智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台
    智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台 ... [详细]
  • hashmap简单描述
    JDK1.7  1.数据结构: 数组+链表  2.put过程中发生hash碰撞是如何处理的?    答:使用“头插法”:将新数据插入当前数组,数组中原数据向链表下(纵向)移动    ... [详细]
  • 如何设计一个秒杀系统(各方面都写的很到位)
    1.Overview1.1并发读写秒杀要解决的主要问题是:并发读与并发写。并发读的优化理念是尽量减少用户到服务端来读数据,或者让他 ... [详细]
  •  在使用PHP多年之后,我对PHP的优势和劣势已经非常清楚,与后起之秀Golang相比,两者已经不在一个重量级。 PHP更像是70kg级别的选手,脚本语言,极速开发,部署方便,性能 ... [详细]
  • python 英文关键词提取_如何提取文章的关键词(Python版)
    项目需求:我们采集来的文章没有关键词,在发布的时候无法设定标签,我们通过代码自动提取出文章的关键词,达到对数据加工的目的。 ... [详细]
  • node的特点:它作为js的运行平台,node保留了前端浏览器js那些熟悉的接口,依旧基于作用于和原型链,区别在于它将前端中广泛应用的思想迁移到服务器。异步IO:关键字:异 ... [详细]
  • 以下内容|尾部_quarkus实战之一:准备工作
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了quarkus实战之一:准备工作相关的知识,希望对你有一定的参考价值。欢迎访问我的GitHub ... [详细]
  • 编程语言是从哪蹦出来的——大型伦理寻根现场
    Hello,我是Alex007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫Alex的人太多了,再加上每天007的生活,Alex007就诞生了。聊一聊编程到底是啥,怎 ... [详细]
  • iic协议
    IIC简介IIC,Inter-IntegratedCircuit,集成电路总线,需要2根线连接拓扑,是半双工,适用于”字节型”设备。I2C总线物理拓扑结构IIC通信原理: 通过对S ... [详细]
  • 导读:很多朋友问到关于入门学什么php框架简单的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 1、对于List而言,要不然就使用迭代器,要不然就从后往前删除,从前往后删除会出现角标越界。因为我List有两个remove方法,一个是int作为形参(删除指定位置的元素),一个是 ... [详细]
author-avatar
2012我的语言
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有